home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 2108 / 2108.xpi / content / install.js < prev    next >
Text File  |  2009-04-01  |  3KB  |  88 lines

  1. var style, strings, name;
  2. var triggeringDocument = null;
  3. var installPingURL = null;
  4.  
  5. function init() {
  6.     style = window.arguments[0].style;
  7.     triggeringDocument = window.arguments[0].triggeringDocument;
  8.     installPingURL = window.arguments[0].installPingURL;
  9.  
  10.     document.documentElement.setAttribute("windowtype", window.arguments[0].windowType);
  11.  
  12.     name = document.getElementById("name");
  13.  
  14.     strings = document.getElementById("strings");
  15.  
  16.     document.documentElement.getButton("extra1").setAttribute("tooltiptext", strings.getString("preview.tooltip"));
  17.  
  18.     function addText(element, text) {
  19.         element.appendChild(document.createTextNode(text));
  20.     }
  21.     var intro = document.getElementById("install-intro");
  22.     //if we don't have a name, prompt for one
  23.     if (style.name) {
  24.         //presumably someone will write a user style to edit this even if it's provided, so might as well make it work
  25.         name.value = style.name;
  26.         addText(intro, strings.getFormattedString("installintro", [style.name]));
  27.     } else {
  28.         document.getElementById("name-container").style.display = "";
  29.         addText(intro, strings.getString("installintrononame"));
  30.     }
  31.     var types = style.getTypes({})
  32.     if (types.indexOf("app") > -1) {
  33.         addText(intro, " " + strings.getFormattedString("installapp", [stylishCommon.getAppName(), stylishCommon.getAppName()]));
  34.     } else if (types.indexOf("global") > -1) {
  35.         addText(intro, " " + strings.getString("installglobal"));
  36.     } else if (types.indexOf("site") > -1) {
  37.         addText(intro, " " + strings.getString("installsite"));
  38.         var appliesTo = document.getElementById("applies-to");
  39.         appliesTo.style.display = "";
  40.         function addItem(text) {
  41.             var li = document.createElementNS("http://www.w3.org/1999/xhtml", "li");
  42.             addText(li, text);
  43.             appliesTo.appendChild(li);
  44.         }
  45.         style.getMeta("url", {}).forEach(function(url) {
  46.             addItem(url);
  47.         });
  48.         style.getMeta("url-prefix", {}).forEach(function(urlPrefix) {
  49.             addItem(urlPrefix + "*");
  50.         });
  51.         style.getMeta("domain", {}).forEach(function(domain) {
  52.             addItem(domain);
  53.         });
  54.     } else {
  55.         addText(intro, " " + strings.getFormattedString("installnotype", [stylishCommon.getAppName()]));
  56.     }
  57.     window.sizeToContent();
  58. }
  59.  
  60. function switchToEdit() {
  61.     Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch).setBoolPref("extensions.stylish.editOnInstall", true)
  62.     stylishCommon.openEdit(stylishCommon.getWindowName("stylishEdit", triggeringDocument ? triggeringDocument.location.href : null), {style: style, triggeringDocument: triggeringDocument, installPingURL: installPingURL});
  63.     window.close();
  64. }
  65.  
  66. function save() {
  67.     if (!name.value) {
  68.         alert(strings.getString("missingname"));
  69.         return;
  70.     }
  71.     style.name = name.value;
  72.     style.enabled = true;
  73.     style.save();
  74.     if (triggeringDocument) {
  75.         stylishCommon.dispatchEvent(triggeringDocument, "styleInstalled");
  76.     }
  77.     if (installPingURL) {
  78.         var req = new XMLHttpRequest();
  79.         req.open("GET", installPingURL, true);
  80.         stylishCommon.fixXHR(req);
  81.         req.send(null);
  82.     }
  83. }
  84.  
  85. function preview() {
  86.     style.setPreview(true);
  87. }
  88.